home *** CD-ROM | disk | FTP | other *** search
/ Aminet 48 / Aminet 48 (2002)(GTI - Schatztruhe)[!][Apr 2002].iso / Aminet / text / edit / vim60rt.lha / Vim / vim60 / doc / usr_24.txt < prev    next >
Encoding:
Text File  |  2001-09-26  |  19.1 KB  |  574 lines

  1. *usr_24.txt*    For Vim version 6.0.  Last change: 2001 Sep 03
  2.  
  3.              VIM USER MANUAL - by Bram Moolenaar
  4.  
  5.                  Inserting quickly
  6.  
  7.  
  8. When entering text, Vim offers various ways to reduce the number of keystrokes
  9. and avoid typing mistakes.  Use Insert mode completion to repeat previously
  10. typed words.  Abbreviate long words to short ones.  Type characters that
  11. aren't on your keyboard.
  12.  
  13. |24.1|    Making corrections
  14. |24.2|    Showing matches
  15. |24.3|    Completion
  16. |24.4|    Repeating an insert
  17. |24.5|    Copying from another line
  18. |24.6|    Inserting a register
  19. |24.7|    Abbreviations
  20. |24.8|    Entering special characters
  21. |24.9|    Digraphs
  22. |24.10|    Normal mode commands
  23.  
  24.      Next chapter: |usr_25.txt|  Editing formatted text
  25.  Previous chapter: |usr_23.txt|  Editing other files
  26. Table of contents: |usr_toc.txt|
  27.  
  28. ==============================================================================
  29. *24.1*    Making corrections
  30.  
  31. The <BS> key was already mentioned.  It deletes the character just before the
  32. cursor.  The <Del> key does the same for the character under (after) the
  33. cursor).
  34.    When you typed a whole word wrong, use CTRL-W:
  35.  
  36.     The horse had fallen to the sky ~
  37.                        CTRL-W
  38.     The horse had fallen to the ~
  39.  
  40. If you really messed up a line and want to start over, use CTRL-U to delete
  41. it.  This keeps the text after the cursor and the indent.  Only the text from
  42. the first non-blank to the cursor is deleted.  With the cursor on the "f" of
  43. "fallen" in the next line pressing CTRL-U does this:
  44.  
  45.     The horse had fallen to the ~
  46.               CTRL-U
  47.     fallen to the ~
  48.  
  49. When you spot a mistake a few words back, you need to move the cursor there to
  50. correct it.  For example, you typed this:
  51.  
  52.     The horse had follen to the ground ~
  53.  
  54. You need to change "follen" to "fallen".  With the cursor at the end, you
  55. would type this to correct it: >
  56.  
  57.                     <Esc>4blraA
  58.  
  59. <    get out of Insert mode        <Esc>
  60.     four words back                 4b
  61.     move on top of the "o"               l
  62.     replace with "a"            ra
  63.     restart Insert mode              A
  64.  
  65. Another way to do this: >
  66.  
  67.         <C-Left><C-Left><C-Left><C-Left><Right><Del>a<End>
  68.  
  69. <    four words back             <C-Left><C-Left><C-Left><C-Left>
  70.     move on top of the "o"            <Right>
  71.     delete the "o"                       <Del>
  72.     insert an "a"                        a
  73.     go to end of the line                     <End>
  74.  
  75. This uses special keys to move around, while remaining in Insert mode.  This
  76. resembles what you would do in a modeless editor.  It's easier to remember,
  77. but takes more time (you have to move your hand from the letters to the cursor
  78. keys, and the <End> key is hard to press without looking at the keyboard).
  79.    These special keys are most useful when writing a mapping that doesn't
  80. leave Insert mode.  The extra typing doesn't matter then.
  81.    An overview of the keys you can use in Insert mode:
  82.  
  83.     <C-Home>    to start of the file
  84.     <PageUp>    a whole screenful up
  85.     <Home>        to start of line
  86.     <S-Left>    one word left
  87.     <C-Left>    one word left
  88.     <S-Right>    one word right
  89.     <C-Right>    one word right
  90.     <End>        to end of the line
  91.     <PageDown>    a whole screenful down
  92.     <C-End>        to end of the file
  93.  
  94. There are a few more, see |ins-special-special|.
  95.  
  96. ==============================================================================
  97. *24.2*    Showing matches
  98.  
  99. When you type a ) it would be nice to see with which ( it matches.  To make
  100. Vim do that use this command: >
  101.  
  102.     :set showmatch
  103.  
  104. When you now type a text like "(example)", as soon as you type the ) Vim will
  105. briefly move the cursor to the matching (, keep it there for half a second,
  106. and move back to where you were typing.
  107.    In case there is not matching (, Vim will beep.  Then you know that you
  108. might have forgotten the ( somewhere, or typed a ) too many.
  109.    The match will also be shown for [] and {} pairs.  You don't have to wait
  110. with typing the next character, as soon as Vim sees it the cursor will move
  111. back and inserting continues as before.
  112.    You can change the time Vim waits with the 'matchtime' option.  For
  113. example, to make Vim wait one and a half second: >
  114.  
  115.     :set matchtime=15
  116.  
  117. The time is specified in tenths of a second.
  118.  
  119. ==============================================================================
  120. *24.3*    Completion
  121.  
  122. Vim can automatically complete words on insertion.  You type the first part of
  123. a word, press CTRL-P, and Vim guesses the rest.
  124.    Suppose, for example, that you are creating a C program and want to type in
  125. the following:
  126.  
  127.     total = ch_array[0] + ch_array[1] + ch_array[2]; ~
  128.  
  129. You start by entering the following:
  130.  
  131.     total = ch_array[0] + ch_ ~
  132.  
  133. At this point, you tell Vim to complete the word using the command CTRL-P.
  134. Vim searches for a word that starts with what's in front of the cursor.  In
  135. this case, it is "ch_", which matches with the word ch_array.  So typing
  136. CTRL-P gives you the following:
  137.  
  138.     total = ch_array[0] + ch_array ~
  139.  
  140. After a little more typing, you get this (ending in a space):
  141.  
  142.     total = ch_array[0] + ch_array[1] +  ~
  143.  
  144. If you now type CTRL-P Vim will search again for a word that completes the
  145. word before the cursor.  Since there is nothing in front of the cursor, it
  146. finds the first word backwards, which is "ch_array".  Typing CTRL-P again
  147. gives you the next word that matches, in this case "total".  A third CTRL-P
  148. searches further back.  If there is nothing else, it causes the editor to run
  149. out of words, so it returns to the original text, which is nothing.  A fourth
  150. CTRL-P causes the editor to start over again with "ch_array".
  151.  
  152. To search forward, use CTRL-N.  Since the search wraps around the end of the
  153. file, CTRL-N and CTRL-P will find the same matches, but in a different
  154. sequence.  Hint: CTRL-N is Next-match and CTRL-P is Previous-match.
  155.  
  156. The Vim editor goes through a lot of effort to find words to complete.  By
  157. default, it searches the following places:
  158.  
  159.     1. Current file
  160.     2. Files in other windows
  161.     3. Other loaded files (hidden buffers)
  162.     4. Files which are not loaded (inactive buffers)
  163.     5. Tag files
  164.     6. All files #included by the current file
  165.  
  166.  
  167. OPTIONS
  168.  
  169. You can customize the search order with the 'complete' option.
  170.  
  171. The 'ignorecase' option is used.  When it is set, case differences are ignored
  172. when searching for matches.
  173.  
  174. A special option for completion is 'infercase'.  This is useful to find
  175. matches while ignoring case ('ignorecase' must be set) but still using the
  176. case of the word typed so far.  Thus if you type "For" and Vim finds a match
  177. "fortunately", it will result in "Fortunately".
  178.  
  179.  
  180. COMPLETING SPECIFIC ITEMS
  181.  
  182. If you know what you are looking for, you can use these commands to complete
  183. with a certain type of item:
  184.  
  185.     CTRL-X CTRL-F        file names
  186.     CTRL-X CTRL-L        whole lines
  187.     CTRL-X CTRL-D        macro definitions (also in included files)
  188.     CTRL-X CTRL-I        current and included files
  189.     CTRL-X CTRL-K        words from a dictionary
  190.     CTRL-X CTRL-T        words from a thesaurus
  191.     CTRL-X CTRL-]        tags
  192.     CTRL-X CTRL-V        Vim command line
  193.  
  194. After each of them CTRL-N can be used to find the next match, CTRL-P to find
  195. the previous match.
  196.    More information for each of these commands here: |ins-completion|.
  197.  
  198.  
  199. COMPLETING FILE NAMES
  200.  
  201. Let's take CTRL-X CTRL-F as an example.  This will find file names.  It scans
  202. the current directory for files and displays each one that matches the word in
  203. front of the cursor.
  204.    Suppose, for example, that you have the following files in the current
  205. directory:
  206.  
  207.     main.c  sub_count.c  sub_done.c  sub_exit.c
  208.  
  209. Now enter Insert mode and start typing:
  210.  
  211.     The exit code is in the file sub ~
  212.  
  213. At this point, you enter the command CTRL-X CTRL-F.  Vim now completes the
  214. current word "sub" by looking at the files in the current directory.  The
  215. first match is sub_count.c.  This is not the one you want, so you match the
  216. next file by typing CTRL-N.  This match is sub_done.c.  Typing CTRL-N again
  217. takes you to sub_exit.c.  The results:
  218.  
  219.     The exit code is in the file sub_exit.c ~
  220.  
  221. If the file name starts with / (Unix) or C:\ (MS-Windows) you can find all
  222. files in the file system.  For example, type "/u" and CTRL-X CTRL-F.  This
  223. will match "/usr" (this is on Unix):
  224.  
  225.     the file is found in /usr/ ~
  226.  
  227. If you now press CTRL-N you go back to "/u".  Instead, to accept the "/usr/"
  228. and go one directory level deeper, use CTRL-X CTRL-F again:
  229.  
  230.     the file is found in /usr/X11R6/ ~
  231.  
  232. The results depend on what is found in your file syste, of course.  The
  233. matches are sorted alphabetically.
  234.  
  235. ==============================================================================
  236. *24.4*    Repeating an insert
  237.  
  238. If you press CTRL-A, the editor inserts the text you typed the last time you
  239. were in insert mode.
  240.    Assume, for example, that you have a file that begins with the following:
  241.  
  242.     "file.h" ~
  243.     /* Main program begins */ ~
  244.  
  245. You edit this file by inserting "#include " at the beginning of the first
  246. line:
  247.  
  248.     #include "file.h" ~
  249.     /* Main program begins */ ~
  250.  
  251. You go down to the beginning of the next line using the commands "j^".  You
  252. now start to insert a new "#include" line.  So you type: >
  253.  
  254.     i CTRL-A
  255.  
  256. The result is as follows:
  257.  
  258.     #include "file.h" ~
  259.     #include /* Main program begins */ ~
  260.  
  261. The "#include " was inserted because CTRL-A inserts the text of the previous
  262. insert.  Now you type  "main.h"<Enter>  to finish the line:
  263.  
  264.  
  265.     #include "file.h" ~
  266.     #include "main.h" ~
  267.     /* Main program begins */ ~
  268.  
  269. The CTRL-@ command does a CTRL-A and then exits Insert mode.  That's a quick
  270. way of doing exactly the same insertion again.
  271.  
  272. ==============================================================================
  273. *24.5*    Copying from another line
  274.  
  275. The CTRL-Y command inserts the character above the cursor.  This is useful
  276. when you are duplicating a previous line.  For example, you have this line of
  277. C code:
  278.  
  279.     b_array[i]->s_next = a_array[i]->s_next; ~
  280.  
  281. Now you need to type the same line, but with "s_prev" instead of "s_next".
  282. Start the new line, and press CTRL-Y 14 times, until you are at the "n" of
  283. "next":
  284.  
  285.     b_array[i]->s_next = a_array[i]->s_next;~
  286.     b_array[i]->s_ ~
  287.  
  288. Now you type "prev":
  289.  
  290.     b_array[i]->s_next = a_array[i]->s_next; ~
  291.     b_array[i]->s_prev ~
  292.  
  293. Continue pressing CTRL-Y until the following "next":
  294.  
  295.     b_array[i]->s_next = a_array[i]->s_next;~
  296.     b_array[i]->s_prev = a_array[i]->s_ ~
  297.  
  298. Now type "prev;" to finish it off.
  299.  
  300. The CTRL-E command acts like CTRL-Y except it inserts the character below the
  301. cursor.
  302.  
  303. ==============================================================================
  304. *24.6*    Inserting a register
  305.  
  306. The command CTRL-R {register} inserts the contents of the register.  This is
  307. useful to avoid having to type a long word.  For example, you need to type
  308. this:
  309.  
  310.     r = VeryLongFunction(a) + VeryLongFunction(b) + VeryLongFunction(c) ~
  311.  
  312. The function name is defined in a different file.  Edit that file and move the
  313. cursor on top of the function name there, and yank it into register v: >
  314.  
  315.     "vyiw
  316.  
  317. "v is the register specification, "yiw" is yank-inner-word.  Now edit the file
  318. where the new line is to be inserted, and type the first letters:
  319.  
  320.     r = ~
  321.  
  322. Now use CTRL-R v to insert the function name:
  323.  
  324.     r = VeryLongFunction ~
  325.  
  326. You continue to type the characters in between the function name, and use
  327. CTRL-R v two times more.
  328.    You could have done the same with completion.  Using a register is useful
  329. when there are many words that start with the same characters.
  330.  
  331. If the register contains characters such as <BS> or other special characters,
  332. they are interpreted as if they had been typed from the keyboard.  If you do
  333. not want this to happen (you really want the <BS> to be inserted in the text),
  334. use the command CTRL-R CTRL-R {register}.
  335.  
  336. ==============================================================================
  337. *24.7*    Abbreviations
  338.  
  339. An abbreviation is a short word that takes the place of a long one.  For
  340. example, "ad" stands for "advertisement".  Vim enables you to type an
  341. abbreviation and then will automatically expand it for you.
  342.    To tell Vim to expand "ad" into "advertisement" every time you insert it,
  343. use the following command: >
  344.  
  345.     :iabbrev ad advertisement
  346.  
  347. Now, when you type "ad", the whole word 'advertisement" will be inserted into
  348. the text.  This is triggered by typing a character that can't be part of a
  349. word, for example a space:
  350.  
  351.     What Is Entered        What You See
  352.     I saw the a        I saw the a ~
  353.     I saw the ad        I saw the ad ~
  354.     I saw the ad<Space>    I saw the advertisement<Space> ~
  355.  
  356. The expansion doesn't happen when typing just "ad".  That allows you to type a
  357. word like "add", which will not get expanded.  Only whole words are checked
  358. for abbreviations.
  359.  
  360.  
  361. ABBREVIATING SEVERAL WORDS
  362.  
  363. It is possible to define an abbreviation that results in multiple words.  For
  364. example, to define "JB" as "Jack Benny", use the following command: >
  365.  
  366.     :iabbrev JB Jack Benny
  367.  
  368. As a programmer, I use two rather unusual abbreviations: >
  369.  
  370.     :iabbrev #b /****************************************
  371.     :iabbrev #e <Space>****************************************/
  372.  
  373. These are used for creating boxed comments.  The comment starts with #b, which
  374. draws the top line.  I then type the comment text and use #e to draw the
  375. bottom line.
  376.    Notice that the #e abbreviation begins with a space.  In other words, the
  377. first two characters are space-star.  Usually Vim ignores spaces between the
  378. abbreviation and the expansion.  To avoid that problem, I spell space as seven
  379. characters: <, S, p, a, c, e, >.
  380.  
  381.     Note:
  382.     ":iabbrev" is a long word to type.  ":iab" works just as well.
  383.     That's abbreviating the abbreviate command!
  384.  
  385.  
  386. FIXING TYPING MISTAKES
  387.  
  388. It's very common to make the same typing mistake every time.  For example,
  389. typing "teh" instead of "the".  You can fix this with an abbreviation: >
  390.  
  391.     :abbreviate teh the
  392.  
  393. You can add a whole list of these.  Add one each time you discover a common
  394. mistake.
  395.  
  396.  
  397. LISTING ABBREVIATIONS
  398.  
  399. The ":abbreviate" command lists the abbreviations:
  400.  
  401.     :abbreviate
  402.     i  #e          ****************************************/
  403.     i  #b         /****************************************
  404.     i  JB         Jack Benny
  405.     i  ad         advertisement
  406.     !  teh         the
  407.  
  408. The "i" in the first column indicates Insert mode.  These abbreviations are
  409. only active in Insert mode.  Other possible characters are:
  410.  
  411.     c    Command-line mode            :cabbrev
  412.     !    both Insert and Command-line mode    :abbreviate
  413.  
  414. Since abbreviations are not often useful in Command-line mode, you will mostly
  415. use the ":iabbrev" command.  That avoids, for example, that "ad" gets expanded
  416. when typing a command like: >
  417.  
  418.     :edit ad
  419.  
  420.  
  421. DELETING ABBREVIATIONS
  422.  
  423. To get rid of an abbreviation, use the ":unabbreviate" command.  Suppose you
  424. have the following abbreviation: >
  425.  
  426.     :abbreviate @f fresh
  427.  
  428. You can remove it with this command: >
  429.  
  430.     :unabbreviate @f
  431.  
  432. While you type this, you will notice that @f is expanded to "fresh".  Don't
  433. worry about this, Vim understands it anyway (except when you have an
  434. abbreviation for "fresh", but that's very unlikely).
  435.    To remove all the abbreviations: >
  436.  
  437.     :abclear
  438.  
  439. ":unabbreviate" and ":abclear" also come in the variants for Insert mode
  440. ("iunabbeviate and ":iabclear") and Command-line mode (":cunabbreviate" and
  441. "cabclear").
  442.  
  443.  
  444. REMAPPING ABBREVIATIONS
  445.  
  446. There is one thing to watch out for when defining an abbreviation: The
  447. resulting string should not be mapped.  For example: >
  448.  
  449.     :abbreviate @a adder
  450.     :imap dd disk-door
  451.  
  452. When you now type @a, you will get "adisk-doorer".  That's not what you want.
  453. To avoid this, use the ":noreabbrev" command.  It does the same as
  454. ":abbreviate", but avoids that the resulting string is used for mappings: >
  455.  
  456.     :noreabbrev @a adder
  457.  
  458. Fortunately, it's unlikely that the result of an abbreviation is mapped.
  459.  
  460. ==============================================================================
  461. *24.8*    Entering special characters
  462.  
  463. The CTRL-V command is used to insert the next character literally.  In other
  464. words, any special meaning the character has, it will be ignored.  For
  465. example: >
  466.  
  467.     CTRL-V <Esc>
  468.  
  469. Inserts an escape character.  Thus you don't leave Insert mode.  (Don't type
  470. the space after CTRL-V, it's only to make this easier to read).
  471.  
  472.     Note:
  473.     On MS-Windows CTRL-V is used to paste text.  Use CTRL-Q instead of
  474.     CTRL-V.  On Unix, on the other hand, CTRL-Q does not work on some
  475.     terminals, because it has a special meaning.
  476.  
  477. You can also use the command CTRL-V {digits} to insert a character with the
  478. decimal number {digits}.  For example, the character number 127 is the <Del>
  479. character (but not necessarily the <Del> key!).  To insert <Del> type: >
  480.  
  481.     CTRL-V 127
  482.  
  483. You can enter characters up to 255 this way.  When you type less than two
  484. digits, a non-digit will terminate the command.  To avoid the need of typing a
  485. non-digit, prepend one or two zeros to make three digits.
  486.    All the next commands insert a <Tab> and then a dot:
  487.  
  488.     CTRL-V 9.
  489.     CTRL-V 09.
  490.     CTRL-V 009.
  491.  
  492. To enter a character in hexadecimal, use an "x" after the CTRL-V: >
  493.  
  494.     CTRL-V x7f
  495.  
  496. This also goes up to character 255 (CTRL-V xff).  You can use "o" to type a
  497. character as an octal number and two more methods allow you to type up to
  498. a 16 bit and a 32 bit number (e.g., for a Unicode character): >
  499.  
  500.     CTRL-V o123
  501.     CTRL-V u1234
  502.     CTRL-V U12345678
  503.  
  504. ==============================================================================
  505. *24.9*    Digraphs
  506.  
  507. Some characters are not on the keyboard.  For example, the copyright character
  508. (©).  To type these characters in Vim, you use digraphs, where two characters
  509. represent one.  To enter a ©, for example, you press three keys: >
  510.  
  511.     CTRL-K Co
  512.  
  513. To find out what digraphs are available, use the following command: >
  514.  
  515.     :digraphs
  516.  
  517. Vim will display the digraph table.  Here are three lines of it:
  518.  
  519.   AC ~_ 159  NS |  160  !I ¡  161  Ct ¢  162  Pd £  163  Cu ¤  164  Ye ¥  165 ~
  520.   BB ¦  166  SE §  167  ': ¨  168  Co ©  169  -a ª  170  << «  171  NO ¬  172 ~
  521.   -- ­  173  Rg ®  174  'm ¯  175  DG °  176  +- ±  177  2S ²  178  3S ³  179 ~
  522.  
  523. This shows, for example, that the digraph you get by typing CTRL-K Pd is the
  524. character (£).  This is character number 163 (decimal).
  525.    Pd is short for Pound.  Most digraphs are selected to give you a hint about
  526. the character they will produce.  If you look through the list you will
  527. understand the logic.
  528.    You can exchange the first and second character, if there is no digraph for
  529. that combination.  Thus CTRL-K dP also works.  Since there is no digraph for
  530. "dP" Vim will also search for a "Pd" digraph.
  531.  
  532.     Note:
  533.     The digraphs depend on the character set that Vim assumes you are
  534.     using.  On MS-DOS they are different from MS-Windows.  Always use
  535.     ":digraphs" to find out which digraphs are currently available.
  536.  
  537. You can define your own digraphs.  Example: >
  538.  
  539.     :digraph a" ä
  540.  
  541. This defines that CTRL-K a" inserts an ä character.  You can also specify the
  542. character with a decimal number.  This defines the same digraph: >
  543.  
  544.     :digraph a" 228
  545.  
  546. More information about digraphs here: |digraphs|
  547.    Another way to insert special characters is with a keymap.  More about that
  548. here: |45.5|
  549.  
  550. ==============================================================================
  551. *24.10*    Normal mode commands
  552.  
  553. Insert mode offers a limited number of commands.  In Normal mode you have many
  554. more.  When you want to use one, you usually leave Insert mode with <Esc>,
  555. execute the Normal mode command, and re-enter Insert mode with "i" or "a".
  556.    There is a quicker way.  With CTRL-O {command} you can execute any Normal
  557. mode command from Insert mode.  For example, to delete from the cursor to the
  558. end of the line: >
  559.  
  560.     CTRL-O D
  561.  
  562. You can execute only one Normal mode command this way.  But you can specify a
  563. register or a count.  A more complicated example: >
  564.  
  565.     CTRL-O "g3dw
  566.  
  567. This deletes up to the third word into register g.
  568.  
  569. ==============================================================================
  570.  
  571. Next chapter: |usr_25.txt|  Editing formatted text
  572.  
  573. Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
  574.